package com.lhz.common.utils.file;

import cn.hutool.core.util.StrUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * @author lihuazhi
 */
public class FileTypeUtil {

    public final static int IMAGE = 1;
    public final static int WORD = 2;
    public final static int EXCEL = 3;
    public final static int PPT = 4;
    public final static int PDF = 5;
    public final static int TXT = 6;
    public final static int HTML = 7;
    public final static int VIDEO = 8;
    public final static int AUDIO = 9;
    public final static int OTHER = 20;

    public final static Map<String, Integer> FILE_TYPE_MAP = new HashMap<>();

    private FileTypeUtil() {
    }

    public static int getType(String url) {
        String fileType = url.substring(url.lastIndexOf(".") + 1);
        Integer integer = FILE_TYPE_MAP.get(fileType.toLowerCase());
        if (integer == null) {
            return 20;
        }
        return integer;
    }

    public static int getTypeByFormat(String format) {
        if (StrUtil.isEmpty(format)) {
            return 20;
        }
        Integer integer = FILE_TYPE_MAP.get(format.toLowerCase());
        if (integer == null) {
            return 20;
        }
        return integer;
    }

    public static String getFormat(String url) {
        String fileFormat = url.substring(url.lastIndexOf(".") + 1);
        if (StrUtil.isEmpty(fileFormat) || fileFormat.length() == url.length() || fileFormat.length() > 11) {
            return "NULL";
        }

        return fileFormat.toLowerCase();
    }

    // 1-image 2-word 3-excel 4-ppt 5-pdf 6-txt 7-html 8-video 9-audio 20-other
    static {
        // 1-image
        FILE_TYPE_MAP.put("bmp", 1);
        FILE_TYPE_MAP.put("jpg", 1);
        FILE_TYPE_MAP.put("jpeg", 1);
        FILE_TYPE_MAP.put("png", 1);
        FILE_TYPE_MAP.put("tiff", 1);
        FILE_TYPE_MAP.put("gif", 1);
        FILE_TYPE_MAP.put("pcx", 1);
        FILE_TYPE_MAP.put("tga", 1);
        FILE_TYPE_MAP.put("exif", 1);
        FILE_TYPE_MAP.put("fpx", 1);
        FILE_TYPE_MAP.put("svg", 1);
        FILE_TYPE_MAP.put("psd", 1);
        FILE_TYPE_MAP.put("cdr", 1);
        FILE_TYPE_MAP.put("pcd", 1);
        FILE_TYPE_MAP.put("dxf", 1);
        FILE_TYPE_MAP.put("ufo", 1);
        FILE_TYPE_MAP.put("eps", 1);
        FILE_TYPE_MAP.put("ai", 1);
        FILE_TYPE_MAP.put("raw", 1);
        FILE_TYPE_MAP.put("wmf", 1);

        // 2-word
        FILE_TYPE_MAP.put("doc", 2);
        FILE_TYPE_MAP.put("docx", 2);

        // 3-excel
        FILE_TYPE_MAP.put("xls", 3);
        FILE_TYPE_MAP.put("xlsx", 3);

        // 4-ppt
        FILE_TYPE_MAP.put("ppt", 4);
        FILE_TYPE_MAP.put("pptx", 4);

        // 5-pdf
        // FILE_TYPE_MAP.put("wpd", 5);
        FILE_TYPE_MAP.put("pdf", 5);

        // 6-txt
        FILE_TYPE_MAP.put("txt", 6);
        FILE_TYPE_MAP.put("rtf", 6);

        // 7-html
        FILE_TYPE_MAP.put("htm", 7);
        FILE_TYPE_MAP.put("html", 7);
        FILE_TYPE_MAP.put("jsp", 7);


        // 8-video
        FILE_TYPE_MAP.put("mp4", 8);
        FILE_TYPE_MAP.put("avi", 8);
        FILE_TYPE_MAP.put("mov", 8);
        FILE_TYPE_MAP.put("wmv", 8);
        FILE_TYPE_MAP.put("asf", 8);
        FILE_TYPE_MAP.put("navi", 8);
        FILE_TYPE_MAP.put("3gp", 8);
        FILE_TYPE_MAP.put("mkv", 8);
        FILE_TYPE_MAP.put("f4v", 8);
        FILE_TYPE_MAP.put("rmvb", 8);
        FILE_TYPE_MAP.put("webm", 8);
        FILE_TYPE_MAP.put("flv", 8);

        // 9-audio
        FILE_TYPE_MAP.put("mp3", 9);
        FILE_TYPE_MAP.put("wma", 9);
        FILE_TYPE_MAP.put("wav", 9);
        FILE_TYPE_MAP.put("mod", 9);
        FILE_TYPE_MAP.put("ra", 9);
        FILE_TYPE_MAP.put("cd", 9);
        FILE_TYPE_MAP.put("md", 9);
        FILE_TYPE_MAP.put("aac", 9);
        FILE_TYPE_MAP.put("vqf", 9);
        FILE_TYPE_MAP.put("ape", 9);
        FILE_TYPE_MAP.put("mid", 9);
        FILE_TYPE_MAP.put("ogg", 9);
        FILE_TYPE_MAP.put("m4a", 9);
    }
}